1. Field of the Invention
The present invention relates to computer systems, software architectures and programs, and more particularly to a method, system and computer program product for optimizing performance of Java programs.
2. Description of the Related Art
Java is a robust, portable object-oriented programming language developed by Sun Microsystems, Inc., that is gaining wide acceptance for writing code for the Internet and World Wide Web (hereinafter, “Web”). Java attains its portability through use of a specially-designed virtual machine (“VM”). The terms “Java” and “JVM” are trademarks of Sun Microsystems, Inc. This virtual machine is also referred to as a “Java Virtual Machine”, or “JVM”. The virtual machine isolates the details of the underlying hardware from the compiler used to compile the Java programming instructions. The compiled code, referred to as Java “byte code”, then runs on top of a JVM, where the JVM is tailored to a specific operating environment.
The nature of Java programming allows designers to approach software solutions in many different ways. Based upon specifications and goals, each software vendor for a particular application will implement their solution slightly differently. While Java profiling of various class implementations has been looked at extensively to assist programmers in developing their applications, such profiling typically involves the runtime performance of the program in its execution code framework. The profiling results in the program being reconfigured for optimization within the context of an execution code framework. What has not been heretofore considered is optimization of execution code in the context of its application. For example, among the various JVM vendors, each emphasize their solution's particular advantages such as faster performance or higher security. However, it is very difficult for Java programmers to learn where each vendor has chosen to optimize their particular implementation of a Java solution. It would be valuable for a software engineer or application writer to understand the strengths and weaknesses of each particular implementation of a Java program so that the solution with the best practices can be integrated or utilized in the application the programmer is designing, rather than being restricted to optimizing the program within a rigid framework. As can be seen, it would be desirable to provide pre-runtime analysis of Java class implementations that takes advantage of the Java language to present the design choices that would be of most value to a programmer, thereby allowing the best practices of Java class implementations to be incorporated or utilized in the custom design.